// 系统配置状态管理
import API from '@/api/index.js';

const state = {
  // 微信小程序激励视频广告ID
  wxRewardVideoId: '', // 默认值，将通过API获取最新值
  
  // 腾讯地图KEY
  tencentLbsKey: '',
  
  // 微信审核模式
  wxAuditMode: true,
  
  // 配置是否已加载
  configLoaded: false
};

const mutations = {
  // 设置微信小程序激励视频广告ID
  SET_WX_REWARD_VIDEO_ID(state, id) {
    state.wxRewardVideoId = id;
  },
  
  // 设置腾讯地图KEY
  SET_TENCENT_LBS_KEY(state, key) {
    state.tencentLbsKey = key;
  },
  
  // 设置微信审核模式
  SET_WX_AUDIT_MODE(state, mode) {
    state.wxAuditMode = mode;
  },
  
  // 标记配置已加载
  SET_CONFIG_LOADED(state, loaded) {
    state.configLoaded = loaded;
  }
};

const actions = {
  // 获取系统配置
  async fetchSystemConfig({ commit }) {
    try {
      // 获取所有系统配置
      const response = await API.config.getConfig();
      
      if (response) {
        const configData = response;
        
        // 更新激励视频广告ID
        if (configData.wxMiniRewardedVideoId) {
          commit('SET_WX_REWARD_VIDEO_ID', configData.wxMiniRewardedVideoId);
          console.log('获取到微信小程序激励视频广告ID:', configData.wxMiniRewardedVideoId);
        }
        
        // 更新腾讯地图KEY
        if (configData.tencentLbsKey) {
          commit('SET_TENCENT_LBS_KEY', configData.tencentLbsKey);
          console.log('获取到腾讯地图KEY:', configData.tencentLbsKey);
        }
        
        // 更新微信审核模式
        if (configData.wxAuditMode !== undefined) {
          commit('SET_WX_AUDIT_MODE', configData.wxAuditMode);
          console.log('获取到微信审核模式:', configData.wxAuditMode);
        }
      }
      
      // 标记配置已加载
      commit('SET_CONFIG_LOADED', true);
      
      return response;
    } catch (error) {
      console.error('获取系统配置失败:', error);
      
      // 即使失败也标记为已加载，避免反复请求
      commit('SET_CONFIG_LOADED', true);
      
      return Promise.reject(error);
    }
  }
};

const getters = {
  // 获取微信小程序激励视频广告ID
  wxRewardVideoId: state => state.wxRewardVideoId,
  
  // 获取腾讯地图KEY
  tencentLbsKey: state => state.tencentLbsKey,
  
  // 获取微信审核模式
  wxAuditMode: state => state.wxAuditMode
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}; 